package com.knight.jdk8.date;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class TemporalAdjusterTest {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2018, 4, 19);
        // 2018-03-03 修改相对于月的日。范围是1至28/31
        System.out.println(date1.withDayOfMonth(30));
        // 2018-02-14 修改相对于年的日。范围是1至365/366
        System.out.println(date1.withDayOfYear(45));
        //获取当前日期的下一个星期天或者当前日期就是星期天则返回当天
        System.out.println(date1.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)));
        // 获取当前日期月的最后一天
        System.out.println(date1.with(TemporalAdjusters.lastDayOfMonth()));
        // 创建一个新的日期，它的值为同一个月中每一周的第几天。如下表示4月第一周的星期一
        System.out.println(date1.with(TemporalAdjusters.dayOfWeekInMonth(1, DayOfWeek.MONDAY)));
        // 2018年4月19号是星期四，这个输出是2018年4月26号。表示的是下一个星期四
        System.out.println(date1.with(TemporalAdjusters.next(DayOfWeek.THURSDAY)));
    }
}
